package com.coffeeloversupportlibrary.core.base;
import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModel;

/**
 * @author puyv
 * @createTime 2021/11/3 14:26
 * @projectName CoffeeLoverSupportLibrary
 * @className IView.java
 * @description View 层顶级接口,持有 ViewModel 泛型引用
 * todo 开始对项目复盘
 */

public interface IView <VM extends ViewModel> {

    /**
    * @date 2021/11/3 14:31
    * @params []
    * @return int
    * @description 基类 Activity 的子类实现：获取该 Activity 布局文件 ID
    */
    int getLayoutId();

    /**
     * 初始化数据
     * @param savedInstanceState
     * 基类 Activity 的子类实现：初始化数据
     */
    void initData(@Nullable Bundle savedInstanceState);

    /**
     * 是否使用DataBinding
     * @return
     * 基类 Activity 的子类实现：灵活决定是否使用 DataBinding 绑定数据视图
     */
    boolean isBinding();

    /**
     * 创建ViewModel
     * @return
     *基类 Activity 实现：创建 UI 层对应的 ViewModel
     */
    VM createViewModel();
}
